package util

// 二分查找循环获取平方根
func GetSqrt(num int) (result int) {
	i, tmp := 0, num
	result = 0
	// 循环判断i是否小于等于该值，通过调整上下边界来判断是否是该值的平方根
	for i <= tmp {
		// 通过二分法得到中间值
		mid := i + (tmp-i)/2
		// 如果该值的平方小于等于该值就记录，i改为该中间值加1
		if mid*mid <= num {
			result = mid
			i = mid + 1
		} else {
			// 否则将中间值减一后覆盖该值重新判断
			tmp = mid - 1
		}
	}
	return result
}
